package fiuba.algo3.gpschallenge.modelo;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;

import fiuba.algo3.gpschallenge.modelo.dificultad.Dificultad;
import fiuba.algo3.gpschallenge.modelo.dificultad.NivelFacil;
import fiuba.algo3.gpschallenge.persistencia.SerializableAXml;

@XmlRootElement
public class Puntaje implements Comparable<Puntaje>,SerializableAXml{
	
	private String nombreJugador;
	@XmlElement
	private int puntos;
	
	private Dificultad dificultad;
	
	public Puntaje(){
		this.nombreJugador = "";
		this.puntos = 0;
		this.dificultad = new NivelFacil();		// Puede ser -Facil -Medio -Dificil
	}

	public Puntaje(String nombreJugador, Dificultad dificultad){
		this.nombreJugador = nombreJugador;
		this.puntos = 0;
		this.dificultad = dificultad;		// Puede ser -Facil -Medio -Dificil
	}
	
	
	public int compareTo (Puntaje puntaje){
		if (this.puntos > puntaje.puntos)	
			return 1;
		else if (this.puntos < puntaje.puntos)
			return -1;
		else  return puntaje.nombreJugador.compareTo(this.nombreJugador);		//cambiado puntaje.nombre jugador por this.nombrejugador
	}
	
	
	
	public String getNombreJugador() {
		return nombreJugador;
	}

	public int getPuntos() {
		return puntos;
	}

	public void setNombreJugador(String nombre) {
		this.nombreJugador = nombre;
		
	}

	public void setDificultad(Dificultad dificultad) {
		this.dificultad = dificultad;
		
	}
	@XmlElementRef
	public Dificultad getDificultad() {
		return this.dificultad;
	}
	
		
	// Recibe el jugador, y la dificultad se la pide a juego.  
	public void setPuntaje (Jugador jugador){
		int movimientosSobrantes = (this.dificultad.getCantidadMaximaDeMovimientos() - jugador.getMovimientos());
		this.puntos = ( movimientosSobrantes * this.dificultad.getMultiplicadorDeDificultad() );
	}
	
	
	public void setPuntaje (int puntos){
		this.puntos=puntos;
	}
	
	
}
